////////////////////////////////////////////////////////////////
///
/// File: BinaryTmpExp.m
/// Author: Lucio Davide Spano
/// Last update: 26 August 2012
/// Description: This file contains the definition of a binary
///              temporal expression
/// To do:
/// ------------------------------------------------------------
/// Copyright (c) 2012 Lucio Davide Spano
///                     (lucio.davide.spano@isti.cnr.it)
///
/// The use and distribution terms for this software are
/// contained in the file named license.txt, which can be found
/// in the root of this distribution.
/// By using this software in any fashion, you are agreeing to
/// be bound by the terms of this license.
///
/// You must not remove this notice, or any other, from this
/// software.
/// ------------------------------------------------------------
////////////////////////////////////////////////////////////////

#import "TmpExp.h"
#import "StateChangeHandler.h"

@interface BinaryTmpExp : TmpExp<StateChangeHandler>
{
    TmpExp* _leftOperand;
    TmpExp* _rightOperand;
    bool leftCompleted, rightCompleted;//, leftAccepted, rightAccepted;
}
@property (retain, nonatomic) TmpExp* leftOperand;
@property (retain, nonatomic) TmpExp* rightOperand;
@property TmpOperator tmpOperator;

- (id) initWithOperands:(TmpExp*) leftOperand :(TmpExp*) rightOperand :(int) tmpOperator;
- (void) setExecState:(int)state :(Token *)token;
- (void) onStateChanged:(TmpExp *)sender :(ExpEventArgs *)args :(Token *)token;
- (void) onNotAcceptedToken:(TmpExp *)sender :(SimpleTmpExp*) originalSender:(ExpEventArgs *)args :(Token *)token;

@end
